home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 58189 / 58189.xpi / modules / ClientPolicy.jsm next >
Text File  |  2010-01-06  |  2KB  |  63 lines

  1. /*
  2.  * This class represents the client policy, which is able to make an 
  3.  * autonomous decision about a certain request.
  4.  */
  5.  
  6. var EXPORTED_SYMBOLS = [ ];
  7. Components.utils.import("resource://csfiremodules/CsFireCommon.jsm");
  8.  
  9. CsFire.ClientPolicy = new function() {};
  10.  
  11. /*
  12.  * This method makes a decision about a request, using the provided request
  13.  * data. The outcome is one of the values defined in the Policy class.
  14.  */
  15. CsFire.ClientPolicy.decide = function(data) {
  16.     var decision = { "action": CsFire.Policy.BLOCK,
  17.                      "source": CsFire.Policy.SRC_CLIENT };
  18.  
  19.     var crossDomain = CsFire.HttpUtils.isRequestCrossDomain(CsFire.HttpUtils.CROSSDOMAIN_RELAXED, data);
  20.  
  21.     if(crossDomain) {
  22.         if(data.method == "GET" || data.method == "HEAD") {
  23.             if(data.params == null) {
  24.                 if(data.user_initiated == false) {
  25.                     if(data.dst_item == "favicon.ico") {
  26.                         decision.action = CsFire.Policy.ACCEPT;
  27.                     }
  28.                     else {
  29.                         decision.action = CsFire.Policy.STRIP;
  30.                         decision.stripAuth = true;
  31.                         decision.stripCookies = true;
  32.                     }
  33.                 }
  34.                 else {
  35.                     decision.action = CsFire.Policy.ACCEPT;
  36.                 }
  37.             }
  38.             else {
  39.                 decision.action = CsFire.Policy.STRIP;
  40.                 decision.stripAuth = true;
  41.                 decision.stripCookies = true;
  42.             }
  43.         }
  44.         else if(data.method == "POST" || data.method == "PUT" || data.method == "DELETE") {
  45.             decision.action = CsFire.Policy.STRIP;
  46.             decision.stripAuth = true;
  47.             decision.stripCookies = true;
  48.         }
  49.         else if(data.method == "OPTIONS" || data.method == "TRACE") {
  50.             decision.action = CsFire.Policy.ACCEPT;
  51.         }
  52.         else {
  53.             CsFire.Logger.warn("Unknown HTTP method: " + data.method);
  54.             decision.action = CsFire.Policy.BLOCK;
  55.         }
  56.     }
  57.     else {
  58.         decision.action = CsFire.Policy.ACCEPT;
  59.     }
  60.  
  61.     return decision;
  62. };
  63.